package gendoc

import (
	"fmt"
	"oa-rest/common"

	"github.com/sirupsen/logrus"
)

// AIDocService AI文档生成服务
type AIDocService struct {
	aiClient *common.Client
}

// NewAIDocService 创建AI文档生成服务
func NewAIDocService() *AIDocService {
	// 创建专门用于 gendoc 服务的客户端，使用 30031 端口
	gendocClient := common.NewClient("http://60.208.118.42:30031")
	return &AIDocService{
		aiClient: gendocClient,
	}
}

// GenerateRequest AI文档生成请求
type GenerateRequest struct {
	Content string `json:"content"`
}

// GenerateResponse AI文档生成响应
type GenerateResponse struct {
	Content      string `json:"content"`
	DocumentType string `json:"document_type"`
	RawContent   string `json:"raw_content"`
}

// GenerateDoc 调用AI服务生成文档
func (s *AIDocService) GenerateDoc(req *GenerateRequest) (*GenerateResponse, error) {
	// 调用AI服务生成内容
	aiReq := map[string]interface{}{
		"content": req.Content,
	}

	// 使用指定的URL路径调用AI服务
	var aiResp struct {
		Content      string `json:"content"`
		DocumentType string `json:"document_type"`
		RawContent   string `json:"raw_content"`
		Error        string `json:"error"`
	}

	// 调试日志：输出实际请求的URL
	logrus.Debugf("AI文档生成服务请求URL: %s", s.aiClient.BaseURL+"/gendoc")

	err := s.aiClient.PostJSON("/gendoc", aiReq, &aiResp)
	if err != nil {
		logrus.Errorf("AI文档生成服务调用失败: %v", err)
		return nil, fmt.Errorf("AI文档生成服务调用失败: %w", err)
	}

	// 检查AI服务返回的错误
	if aiResp.Error != "" {
		logrus.Errorf("AI文档生成服务返回错误: %s", aiResp.Error)
		return nil, fmt.Errorf("AI文档生成服务返回错误: %s", aiResp.Error)
	}

	return &GenerateResponse{
		Content:      aiResp.Content,
		DocumentType: aiResp.DocumentType,
		RawContent:   aiResp.RawContent,
	}, nil
}